import 'reflect-metadata'

// ...exceptions 是错误对象组成的数组
// 如果不传递错误对象或错误类则代表自定义异常过滤器处理所有的异常情况
// 如果传递了一个错误对象或错误类则代表自定义异常过滤器处理该错误的异常情况
// 如果传递了多个错误对象或错误类则代表自定义异常过滤器处理这几个错误的异常情况
export function Catch(...exceptions): ClassDecorator {
  // 类装饰器第一个参数是类本身 
  return (target: Function) => {
    // 给自定义异常过滤器类添加一个 catch 元数据 值是异常对象或异常类组成的数组 如果数组为空则代表需要处理所有情况的异常
    Reflect.defineMetadata('catch', exceptions, target)
  }
}
